﻿using System.Collections.Generic;

namespace Bio.Structure
{
    /// <summary>
    /// Contract for a Group, making up one of the core sets of data structures for the Structure library in Bio.
    /// </summary>
    public interface IGroup
    {
        /// <summary>
        /// Gets the type of Group such as ARG, ALA, etc.
        /// </summary>
        GroupType Type { get; }

        /// <summary>
        /// Gets the list of atoms for this Group.
        /// </summary>
        IList<IAtom> Atoms { get; }

        /// <summary>
        /// Gets the chain number for this group.
        /// </summary>
        int ChainNumber { get; }

        /// <summary>
        /// Gets the parent chain for this group.
        /// </summary>
        IChain ParentChain { get; }

        /// <summary>
        /// Gets the dictionary of metadata for this Group.
        /// There are currently no standard metadata for this object.
        /// </summary>
        IDictionary<string, object> Metadata { get; }
    }
}